#include<cppr.hpp>
using namespace std;

// 定义一个模板类Stack
template <class T>
class Stack
{
public:
	// 构造函数
	Stack(int size = 10)
	{
		m_size = size;
		m_top = 0;
		m_data = new T[m_size];
	}
	// 析构函数
	~Stack()
	{
		delete[] m_data;
	}
	// 压栈
	void push(T val)
	{
		m_data[m_top++] = val;
	}
};
int main()
{
	// 创建一个整型Stack对象s1
	Stack<int> s1(10);
	s1.push(1);
	s1.push(2);
	s1.push(3);
	// 创建一个double型Stack对象s2
	Stack<double> s2(10);
	s2.push(1.1);
	s2.push(2.2);
	s2.push(3.3);
	// 创建一个string型Stack对象s3
	Stack<string> s3(10);
	s3.push("hello");//	s3.push(2.2);
}